﻿var setting = {
    async: {
        enable: true, //开启异步加载模式
        url: "/Web/GetData.html", //配置Ajax异步获取数据的服务页面地址
        autoParam: ["id"], //自动传递url的参数集合 设置为["id","name","pId"]将会传递当前父节点的id和pId以及name值至ajax页面
        dataType: "json",//数据传递方式
        otherParam: ["getType", "getChild"]  //设置其他url参数传递集合 将会在url内多传递一个参数getType且值为getChild
    },
    data: {
        simpleData: {
            enable: true
        }
    },
    view: {
        expandSpeed: "slow" //节点展开加载速度 可以填充的值为：fast、slow、normal 表示动画时长的毫秒数值 (如：1000) 设置为"",表示不显示动画效果
    },
    callback: {
        beforeExpand: beforeExpand, //节点展开前事件 可用于控制展开的条件
        onAsyncSuccess: onAsyncSuccess, //异步获取数据成功的回调函数
        onAsyncError: onAsyncError, //异步获取数据报错的回调函数
        onClick: zTreeOnClick
    }
};

function zTreeOnClick(event, treeId, treeNode) {
    parent.document.getElementById("UpperID").value = treeNode.id;
    parent.document.getElementById("lbMenu").value = treeNode.name;
    parent.document.getElementById("Menu").value = treeNode.name;
    var index = parent.layer.getFrameIndex(window.name);
    parent.layer.close(index);
};

///节点执行加载前事件 
function beforeExpand(treeId, treeNode) {
    //是否正在执行ajax请求
    if (!treeNode.isAjaxing) {
        ajaxGetNodes(treeNode, "refresh");
        return true;
    } else {
        alert("zTree 正在下载数据中，请稍后展开节点。。。");
        return false;
    }
}

///异步加载数据请求成功回调函数
///msg：参数就是后台服务response.write返回的数据  这里是所有子节点的json集合
function onAsyncSuccess(event, treeId, treeNode, msg) {
    //如果没有任何数据返回则直接return          
    if (!msg || msg.length == 0) {
        return;
    }
    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
    //alert("异步获取数据成功");
    treeNode.icon = "";
    zTree.updateNode(treeNode);
}

///异步加载数据请求失败回调函数
function onAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
    alert("异步获取数据出现异常。");
    treeNode.icon = "";
    zTree.updateNode(treeNode);
}

///执行异步获取数据的方式
function ajaxGetNodes(treeNode, reloadType) {
    var zTree = $.fn.zTree.getZTreeObj("treeDemo");
    if (reloadType == "refresh") {
        treeNode.icon = "/assets/img/loading.gif";
        zTree.updateNode(treeNode);
    }
    zTree.reAsyncChildNodes(treeNode, reloadType, true);
}

$(document).ready(function () {
    //初始化zTree 获取几个父节点
    $.ajax({
        type: "POST",
        url: "/Web/GetTopMenu.html",
        success: function (data) {
            if (data != null) {
                var json = eval("(" + data + ")");
                $.fn.zTree.init($("#treeDemo"), setting, json);
            }
        }
    })
});